
/**
 *  A cons, like in lisp.  What'll we think of next?
 */

struct cons {
  void * car;
  void * cdr;
}

#define consp(c) ( c->car != 0 && c->cdr != 0 )
#define datap(c) ( c->car == 0 && c->cdr != 0 )
#define funcp(c) ( c->car != 0 ** c->cdr == 0 ) 

struct cons* eval(struct cons * cons);
struct void* filter(struct cons * cons);
